package org.example.springbook.model;

import lombok.Data;
import org.example.springbook.enums.ResultCode;

@Data
public class Result {

    // 这里想用到前面的知识 所以使用了枚举
    // 不使用的话也可以
    // private Integer code; //0 成功 -1 失败 -2 未登录
    private ResultCode code;
    // 根据状态码 如果失败了 也可以返回一个错误信息 这个信息前端拿到后
    // 就可以显示给我们的用户了
    private String errMsg;

    // 我们的每个接口返回的数据都需要业务状态码和 错误信息
    // 那么我们可以将这两个信息在进行一个封装
    // 用一个对象封装就行了

    private Object data;

    public static Result success(Object data) {
        Result result = new Result();
        result.setCode(ResultCode.SUCCESS);
        result.setErrMsg("");
        result.setData(data);
        return result;
    }

    public static Result fail(String errMsg) {
        Result result = new Result();
        result.setCode(ResultCode.FAIL);
        result.setErrMsg(errMsg);
        result.setData("null");
        return result;
    }

    public static Result fail(String errMsg, Object data) {
        Result result = new Result();
        result.setCode(ResultCode.FAIL);
        result.setErrMsg(errMsg);
        result.setData(data);
        return result;
    }

    public static Result unlogin() {
        Result result = new Result();
        result.setCode(ResultCode.UNLOGIN);
        result.setErrMsg("用户未登录");
        result.setData("null");
        return result;
    }
}
